package main

import (
	"fmt"
)

/*
* 670
有一个数字字符串你设计一个函数，只能交换一次，得出最大的数
*/
func swapToGetMaxNumber(numStr string) string {
	nums := []rune(numStr)

	// 从左到右找到第一个递减位置
	// 若一直递增，则说明数字已经是最大的，无需交换
	var idx int
	for idx = 0; idx < len(nums)-1; idx++ {
		if nums[idx] < nums[idx+1] {
			break
		}
	}

	// 若找到递减位置
	if idx < len(nums)-1 {
		// 从右向左找到第一个比 nums[idx] 大的数字
		swapIdx := len(nums) - 1
		for ; swapIdx > idx; swapIdx-- {
			if nums[swapIdx] > nums[idx] {
				break
			}
		}

		// 交换两个数字
		nums[idx], nums[swapIdx] = nums[swapIdx], nums[idx]
	}

	return string(nums)
}

func main() {
	numStr := "12345"
	maxNumber := swapToGetMaxNumber(numStr)
	fmt.Println("最大的数为:", maxNumber) // 输出：52341
}
